package com.vehiclesecure.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import java.time.LocalDateTime;

/**
 * 紧急警报模型类，用于存储车辆的紧急警报信息
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "emergency_alerts")
public class EmergencyAlert {
    @Id
    private String id;
    private String vehicleId;           // 车辆唯一标识符
    private String vehiclePlate;        // 车牌号
    private String alertType;           // 警报类型（THEFT_ATTEMPT, ENGINE_OVERHEAT, BATTERY_LOW等）
    private double latitude;            // 发生位置纬度
    private double longitude;           // 发生位置经度
    private String description;         // 警报描述
    private AlertStatus status;         // 警报状态
    private Severity severity;          // 警报严重程度
    private LocalDateTime createdAt;    // 警报创建时间
    private LocalDateTime resolvedAt;   // 警报解决时间
    private String createdBy;           // 创建者（系统或用户）
    private String resolvedBy;          // 解决者
    private String deviceSignature;     // 设备签名，用于验证数据来源

    /**
     * 警报严重程度枚举
     */
    public enum Severity {
        HIGH,   // 高严重程度
        MEDIUM, // 中等严重程度
        LOW     // 低严重程度
    }

    public enum AlertStatus {
        ACTIVE, RESOLVED, INVALID
    }
}